package _go

/*面试题 02.02. 返回倒数第 k 个节点
难度
简单

73

收藏

分享
切换为英文
接收动态
反馈
实现一种算法，找出单向链表中倒数第 k 个节点。返回该节点的值。

注意：本题相对原题稍作改动

示例：

输入： 1->2->3->4->5 和 k = 2
输出： 4
说明：

给定的 k 保证是有效的。*/
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func kthToLast(head *ListNode, k int) int {
	if head == nil {
		return 0
	}

	//先跑KK-1次
	f, s := head, head
	for i := 0; i < k && f != nil; i++ {
		f = f.Next
	}

	for f != nil {
		s = s.Next
		f = f.Next
	}

	return s.Val
}
